/*require 要求*/
let http=require("nodejs/http");
let fs=require("fs");
let path=require("path");

let server=http.createServer((request,respone)=>{
    //showDir 显示目录
    showDir(request,respone)
})
/*监听端口*/
server.listen((8000),()=>{
    console.log("服务器启动成功")
})
//显示文件夹中的内容
function showDir(request,response){
    /*获取请求路径*/
    let url=request.url;

    let dirPath="aa";
    if (request.url.indexOf("favicon.ico")!=-1){

    }
    /*如果请求的不是根目录，获取用户的请求路径*/
    if (request.url !="/"){
        dirPath=request.url;
        dirPath=dirPath.substring(1,dirPath.length)
    }
    /*读取文件夹*/
    fs.readdir(dirPath,(err,files)=>{
        /*有异常，向外抛出*/
        if (err){
            throw err
            // response.writeHead(500, {'Content-Type' : 'text/html;charset=utf8'});
            // response.end('<div styel="color:black;font-size:22px;">server error</div>
        }
        /*拼接数据*/
        let data="";
        files.forEach(fileName=>{/*forEach开始*/
            /*拼接路径 绝对路径*/
            let joinPath=path.join(dirPath,fileName);
            /*获取属性 statSync 回调同步*/
            /* 只接收一个path变量，fs.statSync(path)其实是一个fs.stats的一个实例；*/
            let stats=fs.statSync(joinPath);
            /*如果是文件夹，拼接a标签*/
             if (stats.isDirectory()){
                 data+=`<li><a href="${joinPath}">${fileName}</a></li>`
                 // "<li><a href='"+joinPath+"'>"+fileName+"</a></li>"
                 //完全是拼接字符串打法
             }else {
                 /*不是文件夹，不拼a标签*/
                 data+=`<li>${fileName}</li>`
             }/*forEach*/
        })
        response.end(buildHTML(data))
    })
}
/*用于生成html页面*/
function buildHTML(data) {
    return `<!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <style>
            *{
                padding: 0;
                margin: 0;
            }
            li{
                list-style: none;
                padding: 0.5em 1em;
                background-color: #ddd;
                border-top: 1px solid #eee;
            }
            li:hover{
                background-color: #aaaaaa;
            }
        </style>
    </head>
    <body>
    <ul>${data}</ul>
    </body>
    </html>`
}